Systems for providing dynamic values involve shared secrets, which cause predictability problems. For example, a conventional system includes an authentication server and a user device. A user of the user device can attempt to access an account managed by the authentication server. The user device generates a dynamic value based on a shared secret. The user device then sends the dynamic value to the authentication server. The authentication server uses the same shared secret to validate that the dynamic value is authentic. If the dynamic value is successfully authenticated, the authentication server allows the user device to access the account.
This shared secret is problematic, as it is either static, or dynamic but not random. As a result, the shared secret is at risk of being deduced or predicted by an outsider. Additionally, the authentication server has the burden of distributing a shared secret to each user device, as well as storing a shared secret for each user device. Similarly, before being able to participate in the system, each user device in the system is configured to incorporate the shared secret and utilize the dynamic value.